package net.siufung.boot.datasource.rules;

import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * @author 陈建峰
 * @since 2022/8/11 5:12 下午
 */
public interface IDbQuery {

    /**
     * 表信息查询 SQL
     * @return String
     */
    String getTablesSql();

    /**
     * 表字段信息查询 SQL
     * @return String
     */
    String getTableFieldsSql();

    /**
     * 表名称
     * @return String
     */
    String getTableName();

    /**
     * 表注释
     * @return String
     */
    String getTableComment();

    /**
     * 字段名称
     * @return String
     */
    String getFieldName();

    /**
     * 字段类型
     * @return String
     */
    String getFieldType();

    /**
     * 字段注释
     * @return String
     */
    String getFieldComment();

    /**
     * 主键字段
     * @return String
     */
    String getFieldKey();

    /**
     * 判断主键是否为identity
     * @param results ResultSet
     * @return boolean
     */
    boolean isKeyIdentity(ResultSet results) throws SQLException;

    /**
     * 获得字段为NULL的空值
     * @return String
     */
    String getFieldEmptyKey();

    /**
     * 配置数据类型
     * @return 数据类型
     */
    IDbType getDbType();

}
